/**
 * 项目名称：MSH
 * 包名称：com.mt.common.sys.service
 * 文件名称：PermissionService.java
 */
package com.mt.system.service;

import java.util.List;


import org.springframework.transaction.annotation.Transactional;

import com.mt.system.domain.Permission;
import com.mt.system.domain.Role;
import com.mt.system.domain.User;


/**
 * 类名称：PermissionService <br>
 * 类描述： <br>
 * 创建人： 马腾 <br>
 * 创建时间：2012-10-18 下午10:37:50 <br>
 */
@Transactional
public interface PermissionService {
	
	/**
	 * 增加权限
	 * @param permission
	 * @return
	 */
	public Permission addPermission(Permission permission);

	/**
	 * 得到所有的权限
	 * @return
	 */
	public List<Permission> getPermissions();
	
	/**
	 * 根据用户得到该用户的所有权限，并封装成权限树结构<br>
	 * 该方法主要用在初始化界面菜单
	 * @param user
	 * @return
	 */
	public List<Permission> getPermissionTreeByUser(User user);
	
	/**
	 * 根据用户得到该用户的所有权限，并封装成权限树结构<br>
	 * 并根据角色得到该角色的所有权限，如果用户的权限在角色中存在那么权限的选中状态要设置成true<br>
	 * 该方法主要用在给角色赋予权限
	 * @param user
	 * @param role
	 * @return
	 */
	public List<Permission> getPermissionTreeByUser(User user , Role role);
	
	/**
	 * 根据角色查询权限树
	 * @param role
	 * @return
	 */
	public List<Permission> getPermissionTreeByRole(Role role);
	
	/**
	 * 根据角色查询权限
	 * @param role
	 * @return
	 */
	public List<Permission> getPermissionByRole(Role role);
}
